#include <stdio.h>
#include <string.h>

// int main()
// {
//     //strlen : 计算字符串长度
//     //strcpy : 字符串的拷贝   不会进行越界检查
//     //strncpy ： 拷贝n个字符
//     const char *s = "hello";  //留一个位置给\0
//     // printf("%ld\n", strlen(s));
//     // printf("%ld\n", sizeof(s));
//     //char str[6] = {0};
//     char str[3] = {0};  //拷贝越界
//     //strcpy(str, s);  //不是内存安全的函数
//     strncpy(str, s, sizeof(str) - 1);
//     printf("%s\n", str);
// }

int main()
{
    //strcmp : 字符串的比较函数
    //strncmp ： 比较n个字符
    // const char *s = "hello";
    // char str[] = "hello";
    // if(strcmp(s, str) == 0)
    // {
    //     printf("字符串相等\n");
    // }

    // // const char *s1 = "ha";
    // // const char *s2 = "hd";
    // const char *s1 = "hello";
    // const char *s2 = "helloworld";
    // // 返回值：字符串中同一位置的字符的asc码的差值
    // // 一个字符一个字符的比较，找到不为0的差值返回
    // //子串 ：由字符串的一部分组成的字符串
    // // printf("%d\n",strcmp(s1, s2));
    // printf("%d\n",strncmp(s1, s2,5));



    // //strstr : 字符串匹配函数
    // const char *s1 = "llo";
    // const char *s2 = "helloworld";
    // //在前一个字符串中寻找后一个字符串，找到就返回该子串在前一个字符串中的地址
    // char* dest = strstr(s1, s2);
    // printf("%s\n",dest);

    //strstr : 字符串匹配函数
    // const char *s1 = "llw";
    // const char *s2 = "helloworld";
    // //在前一个字符串中寻找后一个字符串，找到就返回该子串在前一个字符串中的地址
    // //没找到，就返回空指针
    // char* dest = strstr(s2, s1);
    // if(dest == NULL)
    // {
    //     printf("没找到！\n");
    // }
    // else
    // {
    //     printf("%s\n",dest);
    // }




    // //字符串切割函数
    // char str[] = "zhangsan,lisi.wangwu";
    // //被切割的字符串   切割符号集合
    // //返回值 ： 切割下来的字符串的首地址
    // char *s = strtok(str,",.");
    // printf("%s\n",s);
    // // 继续切割上一次的字符串
        
    //     s = strtok(NULL, ",.");
    //     printf("%s\n",s);
    //     s = strtok(NULL, ",.");
    //     printf("%s\n",s);
    //     s = strtok(NULL, ",.");
    //     printf("%p\n",s);  // 没有能再切割的字符串，返回空指针

    // //字符串切割函数
    // char str[] = "zhangsan,lisi.wangwu";
    // //被切割的字符串   切割符号集合
    // //返回值 ： 切割下来的字符串的首地址
    //    strtok会把分隔符变成\0
    // char *s = strtok(str,",.");
    // while(s != NULL)
    // {
    //     printf("%s\n",s);
    //     s = strtok(NULL, ",.");
    // }
    


    //strcat : 字符串拼接函数
    const char *s = "world";
    char str[20] = "hello";
    strcat(str,s);
    printf("%s\n",str);
    return 0;

    //strncat 
    const char *s = "world";
    char str[10] = "hello";
    strncat(str,s,sizeof(str) - strlen(str) - 1);
    printf("%s\n",str);
    return 0;
}